package com.scala.learn.collections

/**
 * 集合部分学习
 * 1、Seq是一个有先后次序的值得序列，比如数组和列表。
 * IndexedSeq允许我们通过整形的下标快速地访问任意元素。比如ArrayBuffer是带下标的，但是链表不是
 * 2、Set是一组没有先后次序的值，在SortedSet中，元素以某种排过序的顺序被访问。
 * 3、Map是一组（键、值）对偶。SortedMap按照键的排序访问其中的实体
 */
object CollectionPart01 {
  def main(args: Array[String]): Unit = {
    func02()
    //    func01()
  }

  /**
   * 可变集合与非可变集合
   * scala同时支持可变的和不可变的集合，不可变的集合从不改变，因此可以安全地共享引用，
   * 甚至是在一个多线程的应用程序中也没有问题。
   * scala优先采用不可变集合
   */
  def func02() {
    //计算出一个数字中所有出现的0-10的阿拉伯数字
    def digits(n: Int): Set[Int] = {
      if (n < 0) digits(-n)
      else if (n < 10) Set(n)
      else digits(n / 10) + (n % 10)
    }
    println(digits(15686))
  }

  def func01() {
    val map = Map({ "name" -> "linhd" }, { "age" -> 22 })
    println(map.get("name"))
    println(map("name"))
    println(map.get("age"))
    println(map("age"))
  }
}